package br.com.foxinline.manager.pesquisar;

import br.com.foxinline.modelo.Origem;
import br.com.foxinline.servico.OrigemServico;
import br.com.foxinline.utilitario.Mensagem;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

/**
 *
 * @author cadomeireles
 */
@ViewScoped
@ManagedBean
public class ManagerPesquisarOrigem implements Serializable {
    
    @EJB
    OrigemServico origemServico;
    
    private Origem origemPesquisar;
    private Origem origemVisualizar;
    private Origem origemDeletar;

    private List<Origem> origens;
    
    private String visualizarId;
    
    @PostConstruct
    public void init() {
        instanciar();
        delegar();
    }
    
    private void instanciar() {
        this.origemDeletar = new Origem();
        this.origemPesquisar = new Origem();
        this.origens = new ArrayList<Origem>();
    }

    private void delegar() {
        Map<String, String> parametros = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
        this.visualizarId = parametros.get("origemId");
        
        if (this.visualizarId != null) {
            this.origemVisualizar = origemServico.pesquisar(Long.parseLong(this.visualizarId));
        }
    }
    
    public void pesquisar() {        
        this.origens = origemServico.pesquisar(this.origemPesquisar);
    }
    
    public void limpar() {
        instanciar();
    }
    
    public void deletar() {
        origemServico.deletar(this.origemDeletar);
        
        pesquisar();
        
      ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
        FacesContext fc = FacesContext.getCurrentInstance();
        FacesContext.getCurrentInstance().addMessage("messages", new FacesMessage(FacesMessage.SEVERITY_INFO, "Origem excluída com sucesso!", ""));
        fc.getExternalContext().getFlash().setKeepMessages(true);

        try {
            context.redirect("pesquisarOrigem.xhtml");
        } catch (IOException ex) {
            Logger.getLogger(ManagerPesquisarOrigem.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public Origem getOrigemDeletar() {
        return origemDeletar;
    }

    public void setOrigemDeletar(Origem origemDeletar) {
        this.origemDeletar = origemDeletar;
    }

    public Origem getOrigemPesquisar() {
        return origemPesquisar;
    }

    public void setOrigemPesquisar(Origem origemPesquisar) {
        this.origemPesquisar = origemPesquisar;
    }

    public Origem getOrigemVisualizar() {
        return origemVisualizar;
    }

    public void setOrigemVisualizar(Origem origemVisualizar) {
        this.origemVisualizar = origemVisualizar;
    }

    public List<Origem> getOrigens() {
        return origens;
    }

    public void setOrigens(List<Origem> origens) {
        this.origens = origens;
    }

}
